#在计算加减乘除前，先输出一个分隔线（=====）
#方案4：使用修饰器完成
# 修饰器，既可以有返回值、也可以没有返回值，他的样式是多种多样的。
# 实现方式: 实际函数名=修饰器函数名(实际函数名)

def show(function):
    def temp(x,y):
        print("===========")
        z=function(x,y)
        return z
    return temp



def myAdd(a,b):
    return a+b


def mySubstract(a,b):
    return a-b

def myMultiply(a,b):
    return a*b

def myDivide(a,b):
    return a/b

myAdd=show(myAdd)
print(myAdd(3,4))
mySubstract=show(mySubstract)
print(mySubstract(3,4))
myMultiply=show(myMultiply)
print(myMultiply(3,4))
myDivide=show(myDivide)
print(myDivide(3,4))













# def decorator(function):
#     '''
#     最外层（第1层）decorator是装饰器名称
#     function：参数，即需要装饰的函数的名称（函数名称）
#     return：返回值wrapper，为了保持与原函数参数一致（返回值为函数）
#     '''
#     def wrapper(*arg,**args):
#         '''
#            内部函数（第2层）函数，该函数用于实现“额外功能”（装饰作用）
#            *arg,**args：参数保持与需要装饰的函数参数一致，这里用*arg和**args代替
#         '''
#         #Todo  执行函数前装饰操作（要做什么写在这里，额外功能代码，装饰功能，额外功能代码）            
#         function()   #执行原函数
#     return wrapper